/**
 *
 * Copyright (c) 2006-2007 Berlin Brown and botnode.com/Berlin Research  All Rights Reserved
 *
 * http://www.opensource.org/licenses/bsd-license.php

 * All rights reserved.

 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:

 * * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * * Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 * * Neither the name of the Botnode.com (Berlin Brown) nor
 * the names of its contributors may be used to endorse or promote
 * products derived from this software without specific prior written permission.

 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Date: 12/15/2009 
 *   
 * Home Page: http://botnode.com/
 * 
 * Contact: Berlin Brown <berlin dot brown at gmail.com>
 */
package org.bresearch.websec.net.win;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import org.bresearch.websec.net.ConnectSettingsBean;
import org.bresearch.websec.net.HttpConnect;
import org.bresearch.websec.net.IHttpConnect;

public class ConnectFrame extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = 535710310815697611L;

    private JTextField urlField;
    private JTextArea responseArea;
    private JButton actionButton;
    
    public ConnectFrame(final JTextField url, final JTextArea response, final JButton actionButton) {
        
        this.urlField = url;
        this.responseArea = response;        
        this.actionButton = actionButton;
        
    }       
    
    public void loadFrame() {        
        
        final BoxLayout layout = new BoxLayout(getContentPane(), BoxLayout.Y_AXIS);       
        this.getContentPane().setLayout(layout);
        this.add(this.urlField);
        
        // Build a scrollable pane around the text area //
        final JScrollPane jScrollPane = new JScrollPane(this.responseArea);        
        this.add(jScrollPane);
        this.add(this.actionButton); 
        
        // Add the button handler //        
        this.actionButton.addActionListener(
                new ActionListener() {
                    public void actionPerformed(final ActionEvent event) {                        
                        ConnectFrame.this.handleConnect();                        
                    }
                } // End of Listener //        
        );
        
    }
    
    public void handleConnect() {
        
        System.out.println("Executing Connect");
        
        final ConnectSettingsBean settings = new ConnectSettingsBean(this.urlField.getText());
        final IHttpConnect connection = new HttpConnect(settings, null);
        connection.connect(connection.buildURL());
       
        final StringBuilder buf = new StringBuilder(100);
        buf.append(connection.getLastResult().buildHeaderResponse());
        buf.append("-------------------\n");
        buf.append(connection.getLastResult().getHtmlData());        
        this.responseArea.setText(buf.toString());
    }

    /**
     * @return the urlField
     */
    public JTextField getUrlField() {
        return urlField;
    }

    /**
     * @return the responseArea
     */
    public JTextArea getResponseArea() {
        return responseArea;
    }

    /**
     * @return the actionButton
     */
    public JButton getActionButton() {
        return actionButton;
    }
    
} // End of the Class //
